var BookingMySetupFix = function() {
    this._HTMLDom = null;

    // 지역 정보 데이터
    this.mAreaData = null;

    // 선택한 지역 데이터
    this.mSelectItem = null;
};

BookingMySetupFix.prototype = {
    constructor : BookingMySetupFix,
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // InterlockBooking class 에 연동요청
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /**
     * My 설정 데이터 요청
     */
    getMySetup : function() {
        var data = new Object();
        var interlockBooking = new InterlockBooking();
        var thisClass = this;

        $.mobile.showPageLoadingMsg();

        // 골프장 코스 데이터 초기화
        thisClass.mSelectItem = new Array();

        interlockBooking.getMySetup(data, function($data) {
            // 체크리스트에 해당 데이터 체크 진행
            thisClass.setMySetupChecked($data);

            $.mobile.hidePageLoadingMsg();

        }, function(e) {
            console.log("fail :: " + JSON.stringify(e));
            $.mobile.hidePageLoadingMsg();
        });
    },
    /**
     * My 설정 데이터 저장 요청
     */
    setMySetup : function($areaData) {
        var data = "";
        var interlockBooking = new InterlockBooking();
        var thisClass = this;
        var i = 0;

        $.mobile.showPageLoadingMsg();

        while (i < $areaData.length) {
            if (i == 0) {
                data += "" + $areaData[i].area_id + "," + $areaData[i].club_id + ",_NOT";
            } else {
                data += "," + $areaData[i].area_id + "," + $areaData[i].club_id + ",_NOT";
            }
            i++;
        }

        interlockBooking.setMySetup(data, function($jsonData) {
            // alert("setMySetup success :: " + JSON.stringify($jsonData));
            // alert("success check :: " + objJson.checkResult($jsonData));
            if (new MJson().checkServiceResult($jsonData)) {
                // TODO
                alert("설정이 저장되었습니다.");
                $.mobile.changePage('my_setup.html');
            } else {
                console.log("setMySetup error");
                console.log($jsonData);
            }
            $.mobile.hidePageLoadingMsg();
        }, function(e) {
            console.log("fail :: " + JSON.stringify(e));
            $.mobile.hidePageLoadingMsg();
        });
    },
    /**
     * 지역별 골프 코스 요청 연동
     */
    getGolfCourseData : function($area, $total) {
        var data = new Object();
        var interlockBooking = new InterlockBooking();
        var thisClass = this;

        $.mobile.showPageLoadingMsg();

        data.area = $area;

        interlockBooking.getGolfClubData(data, function($data) {
            // 지역별 카테고리 설정
            thisClass.setAreaCategory($area, $data);

            if ($area < $total) {
                // 지역 총 카테고리 호출 시 순서대로 호출하기 위해 하나 처리 이후 다음것을 처리하기 위한 재귀함수 호출
                thisClass.getGolfCourseData(++$area, $total);
            }

        }, function(e) {
            console.log("fail :: " + JSON.stringify(e));
            $.mobile.hidePageLoadingMsg();
        });
    },
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /**
     * 각각 지역별 카테고리 데이터 설정
     */
    setAreaCategory : function($index, $data) {
        console.log("setAreaCategory");
        var data = $data;
        var category_list = this._HTMLDom["areaCategory_list"].eq($index);
        var list_item_css = this._HTMLDom["areaCategory_list_item"].find('label:first').attr('class');
        var list_item_css_last = this._HTMLDom["areaCategory_list_item_last"].find('label:last').attr('class');
        var thisClass = this;
        var i = 0;

        category_list.empty();

        if (data != null) {
            while (i < data.length) {
                var clubId = data[i].area_id + ',' + data[i].club_id;
                category_list.append('<input type="checkbox" name="#" course_Id="' + clubId + '" id="area_' + $index + '_' + i + '"/><label for="area_' + $index + '_' + i + '">스카이 골프장</label>');
                i++;
            }

            this.mAreaData[$index] = data;
        }

        category_list.find("label").attr("class", list_item_css);
        category_list.find("label:last").attr("class", list_item_css_last);
        category_list.find('input').checkboxradio();

        category_list.find('div').each(function(n) {
            $(this).find("label>span>span:first").html(data[n].club_name);
        });

        thisClass.setMySetupChecked(thisClass.mSelectItem);

        if ($index == 3) {
            // 팝을 통해 선택된 항목 자동 체크
            if (document.globalObj.BOOKING_DATA.popSelectMyArea != null) {
                /**
                 * 연동 데이터를 가져오는 타이밍의 차이가 있어 pageinit 이벤트 이후에 처리하기 위해 pageshow 이벤트에서 처리
                 */
                i = 0;
                var data = document.globalObj.BOOKING_DATA.popSelectMyArea;
                while (i < data.length) {
                    thisClass.setAllCheckByArea(data[i]);
                    if (data[i] == 0) {
                        // 데이터중 전체 선택 항목이 있을 경우 중지
                        break;
                    }
                    i++;
                }
                document.globalObj.BOOKING_DATA.popSelectMyArea = null;
            }
        }

        $.mobile.hidePageLoadingMsg();
    },
    /**
     * 체크리스트에 해당 데이터 체크 진행
     */
    setMySetupChecked : function($data) {
        console.log("setMySetupChecked");
        var i = 0;
        var areaCategory_list = this._HTMLDom["areaCategory_list"];

        if ($data != null) {
            while (i < $data.length) {
                var data = $data[i];
                var findId = data.area_id + "," + data.club_id;

                areaCategory_list.find('input[course_Id="' + findId + '"]').attr('checked', true);
                i++;
            }
            this.mSelectItem = $data;
        }

        areaCategory_list.find('input').checkboxradio('refresh');
    },
    setAllCheckByArea : function($area) {
        console.log("setAllCheckByArea");
        // 전체 선택시
        if ($area == 0) {
            $('input:checkbox').attr('checked', true);
            $('input:checkbox').checkboxradio('refresh');
            return;
        }
        var category_list = this._HTMLDom["areaCategory_list"].eq($area);

        category_list.find('input[type=checkbox]').attr('checked', true);
        category_list.find('input[type=checkbox]').checkboxradio('refresh');
    },
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Initialize
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    onPageShow : function() {
        console.log("BookingMySetupFix show");
        var i = 0;
        var thisClass = this;
        var layer = $("#booking_my_setup_fix_contents");

        // 지역 데이터 초기화
        this.mAreaData = new Array();

        this._HTMLDom = {
            // 전체 선택 체크 버튼
            "allSelectAreaChk" : layer.find('div[id="all"]'),
            // 지역권 카테고리
            "areaCategory" : layer.find('li'),
            // 지역권 카테고리 리스트
            "areaCategory_list" : layer.find('fieldset'),
            // 지역권 카테고리 리스트 아이템
            "areaCategory_list_item" : layer.find('fieldset[id="area_category_list"]>div:first'),
            "areaCategory_list_item_last" : layer.find('fieldset[id="area_category_list"]>div:last')
        };

        thisClass.getGolfCourseData(1, 3);

        // 내 설정 데이터 가져오기
        thisClass.getMySetup();

        // 전체 선택 CheckBox
        $('#check_all').on('change', function() {
            thisClass._HTMLDom['areaCategory_list'].find('input[type=checkbox]').attr('checked', $(this).prop('checked'));
            thisClass._HTMLDom['areaCategory_list'].find('input[type=checkbox]').checkboxradio('refresh');
        });

        // 설정 저장 버튼
        $('#save_my_setup').live('click', function() {
            thisClass.mSelectItem = new Array();
            $('input:checkbox').each(function(n) {
                if ($(this).attr('id') != 'check_all' && $(this).prop('checked')) {
                    var index = $(this).attr('id').split('_');
                    var course = thisClass.mAreaData[index[1]][index[2]];
                    console.log(course);
                    thisClass.mSelectItem.push(course);
                }
            });
            thisClass.setMySetup(thisClass.mSelectItem);
        });

        $('#go_sel_area_pop').click(function() {
            $.mobile.changePage("my_setup_pop.html");
        });
    }
};
